Conversation
Integrates upstream changes including: - TraceStorage refactoring in main_trace.rs - FRIE2F4 opcode and op flag - ACE circuit module (air/src/ace.rs) - Various processor/prover refactoring Conflict resolutions: - tagging module: kept deleted (our branch removed tagging) - stack/crypto/mod.rs: kept deleted (flattened to crypto.rs; FRIE2F4 will be ported in follow-up) - main_trace.rs: adopted TraceStorage, removed MainTraceRow struct (lives in columns.rs), kept ACE_COL_MAP accessors - CHANGELOG.md: restored from upstream
Rewrite documentation and variable naming across all four crypto constraint functions (CRYPTOSTREAM, HORNERBASE, HORNEREXT, FRIE2F4) to make the constraints understandable without cross-referencing external docs. Key changes: - Add stack layout and helper register maps to every function docstring - FRIE2F4: reorganize 12 numbered groups into 4 logical phases (domain identification, folding parameters, fold4 core, consistency/state) - FRIE2F4: move output/helper bindings from top-of-function dump to the phase that uses them, so variable provenance is always nearby - FRIE2F4: rename single-letter and ambiguous variables (p → tree_index, ev → eval_point, ne → fold_result, f_tau → tau_factor, etc.) - FRIE2F4: extract fold2_doubled closure to eliminate repeated pattern - FRIE2F4: add fold2 derivation from even/odd polynomial decomposition - FRIE2F4: document bit-reversal mapping between stack order and fold4 natural order - Add QuadFeltExpr::double() method to ext_field module Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
GitHub did not report trusted authors in a stable way on pull requests. Some Miden team members showed up as CONTRIBUTORS, so role checks could not tell team PRs from outside PRs. That pushed the workflow to skip too much.\n\nThis change uses the author's repo permission instead. The workflow now skips only authors with admin, maintain, or write access.
…nel gh-pages push (#2916) The repo had two different ideas of how GitHub Pages was being published. The rustdoc job was updating a gh-pages branch, while the repo also had a Pages workflow that deployed a separate site artifact. That split makes /docs easy to populate in the branch while the live site continues serving something else entirely. This change makes docs.yml build the complete Pages payload itself: the root page redirects to docs.miden.xyz/miden-vm/ and the generated rustdoc is placed at /docs/. It also removes the older manual redirect-only workflow so there is a single authoritative publisher for the Pages site. Operationally, this only works as intended when the repository Pages source is configured to use GitHub Actions rather than Deploy from a branch. Once that setting is aligned, the workflow output and the public site should finally match.
…EAD procedures (#2835) (#2941) Add doc comments warning that source and destination memory ranges must not overlap for memcopy_words, memcopy_elements, encrypt, and decrypt. Add runtime overlap assertions to all four procedures that panic with a clear error message when ranges overlap. Add unhappy-path tests verifying the overlap guards reject overlapping ranges for all four procedures. Update auto-generated docs (mem.md, crypto/aead.md). Co-authored-by: François Garillot <4142+huitseeker@users.noreply.github.com>
* Use precompile request digest in trace binding * Refactor trace inputs for prove-from-trace * Strengthen prove-from-trace integration coverage * Tighten trace proving helper APIs * chore: Changelog * Document trace build inputs test helpers * Follow trace replay review feedback * Add recursive precompile verifier coverage
Add domain separation to bus message encodings so that messages from different buses are always distinct, even when they share the same coefficient layout. Each bus type gets a unique prefix: bus_prefix[bus] = alpha + (bus+1) * beta^MAX_MESSAGE_WIDTH This aligns the ACE boundary check circuit (ace.rs) and the MASM recursive verifier (public_inputs.masm, reduce_kernel_digests) with the symbolic constraint encoding in Challenges::encode. Also: - Automate regeneration of all circuit-derived files (constraints_eval.masm, mod.masm RELATION_DIGEST, config.rs RELATION_DIGEST) from a single ignored test: `regenerate_ace_circuit_data`. - Add insta snapshot test for relation digest in miden-air. - Fix VLPI test reference to use bus_prefix instead of bare alpha. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Introduce `AceDag::compact()` which removes nodes unreachable from the root after constant folding, then remaps all NodeId references to maintain contiguous indices. Called after DAG construction in both the AIR and codegen lowering paths, producing a smaller circuit commitment. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Column layout types (MainCols, DecoderCols, StackCols, etc.) are used
exclusively by AIR constraint code, not by the processor's trace
generation. Moving them into the constraints module eliminates ~1100
lines of diff in the trace directory against origin/next, keeping only
genuine functional changes (bus domain separation in challenges.rs and
bus_types constants).
Column structs are colocated with their constraint modules:
- constraints/columns.rs: MainCols, AuxCols, col maps
- constraints/{system,decoder,stack,range}/columns.rs: per-module cols
- constraints/chiplets/columns.rs: all chiplet cols + periodic cols
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Remove the unsafe `impl Index<usize>` hacks from DecoderCols, StackCols, and RangeCols. All indexed access is replaced with safe alternatives: - StackCols: new `get(idx)` and `elements(range)` methods replace `stack[i]` - DecoderCols: all access via named fields (`.addr`, `.hasher_state[i]`, `.batch_flags[i]`, `.user_op_helpers()`, `.end_block_flags()`) - RangeCols: Index impl deleted (zero usage) Also: - Rename MainTraceRow to MainCols everywhere (145 sites, 32 files) - Add named NUM_*_COLS size constants for all column structs - Delete decoder_cols/op_group_cols/stack_cols local constant modules Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Merge chiplets/bus/chiplets/{mod.rs, requests.rs, responses.rs} back
into a single chiplets/bus/chiplets.rs so the diff against origin/next
shows as an in-place edit rather than a full delete + 3 new files.
Restore old helper function names (compute_call_request, compute_end_request,
compute_ace_request, compute_hasher_message, etc.) to further minimize
the diff against the merge base.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ations (#2939) Co-authored-by: François Garillot <4142+huitseeker@users.noreply.github.com>
* perf: make get_divisors return a fixed size Vec * chore: update CHANGELOG.md --------- Co-authored-by: François Garillot <4142+huitseeker@users.noreply.github.com>
Update MAST package structure for project assembly
processor: expose advice, memory and transcript
feat: implement project assembly
Keep runtime dependencies from preassembled packages in dependency resolution. Programs that declare a kernel now require the matching kernel package when they are rebuilt. The resolver prefers the stored kernel, falls back to a matching embedded kernel, and rejects bad or conflicting embedded kernel metadata.
This reverts commit b40e5e9.
Preassembled packages still need their runtime dependencies during resolution. Programs that need a kernel now fail when that kernel cannot be resolved, instead of silently falling back to embedded metadata during dependency selection.
* Require acquiring a lock on the index file handle in order to read/write the index. This protects against simultaneous writes of the index from multiple instances of the `miden-registry` process. * Do not update the in-memory registry index until the package artifact has been written to the local package store. This protects against the index and the store getting out of sync due to an error writing the artifact.
Store local artifacts with package-qualified names, while still loading legacy digest-only artifacts when they match the requested package. Use the same validated legacy fallback for package summaries, loading, and public artifact path lookup.
Use the package cache for dependency artifacts instead of publishing them. Repair unreadable exact cache entries, skip cache writes on semantic version collisions, and avoid repairing exact artifacts that are already readable. Closes #2946.
Reject duplicate publishes before artifact writes, perform publish and cache writes under the index lock, and roll back staged index updates when writes fail.
Re-read cache artifacts while holding the index lock before repair writes. Check validated legacy artifacts before writing or replacing package-qualified cache artifacts, including corrupt qualified artifacts.
…ersistence Fix local registry persistence
Picks one tuple ordering and applies it everywhere per Al-Kindi's review recipe (#2962#pullrequestreview-4210798855): - Rename `Deg::{n,d}` → `Deg::{v,u}` so field order matches the V-first prose convention. - Sweep prose `(U, V)` / `(U_g, V_g)` / `(U_col, V_col)` → V-first variants across `air/src/lookup/*` and one processor test, including flipping the storage layout of `DebugTraceState::column_folds` and the algebra in the cached-encoding-equivalence check (`V_c·U_e − V_e·U_c`). - Replace pre-flag batch-outer `Deg` with the post-flag (V, U) contribution to (V_g, U_g) at all 21 batch sites + inline `// (V, U) = (V_pre + deg(f), U_pre + deg(f))` annotation. - Rewrite the `Deg` struct docstring to spell out the rename, the V-first ordering, and the three semantic call sites (single interaction, batch outer, group/column scope). A broader follow-up is planned to split `Deg` into per-level types (`InteractionDeg` carrying `(deg_m, deg_v, deg_f)`; `BatchDeg` carrying `(v, u, deg_f)` for pre-flag (N, D); `GroupDeg` and `ColumnDeg` carrying post-flag `(v, u)` totals) so each annotation is self-contained and the validator can specialize per scope. Out of scope for this commit. Resolves PR #2962 review comments r3172841899, r3173143736, r3173177827, r3173358177, r3173377256, r3173359698. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* update smt with domain separation * hash_words reuse, remove useless comments * further simplify comments * build docs * Finalize miden-crypto 0.25.0 integration * Use released midenc-hir-type 0.6.1 * Update changelog PR reference * Fix hash_words docs word count * Fix merge_in_domain docs order --------- Co-authored-by: Grzegorz Świrski <grzegorz@swirski.name>
feat: local package registry implementation
Conflict in processor/src/trace/tests/decoder.rs: origin/next still had the old aux-trace P1/P2/P3 tests; our branch replaced them with the new LogUp interaction harness. Kept our version and ported the two new DYNCALL regression tests added by origin/next (PR #2904). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- messages.rs: replace manual `bp[i]*field` lines with `inner_product_at` in HasherMsg, MemoryMsg, BlockStackMsg, and SiblingMsg encoders - chiplet_responses.rs: extract `full_state` / `full_rate` local helpers so sponge_start, sponge_respan, and sout share the assembly expression - hasher.rs test: match on `bool` selector bits instead of u8; add `as_bit` helper that returns None for non-binary values so malformed selectors skip the row rather than silently aliasing to a valid response kind (nits 2 and 4 were already addressed: control_remove closure and next_op_first_child_flag helper both existed before this commit) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
All-LogUp auxiliary trace bus constraints
* fix(project): narrow build provenance inputs * fix(assembly): reject private cross-module imports * fix(assembly): count signature type imports * chore: CHANGELOG
* docs(processor): fix memory trace delta encoding comment * docs(processor): fix stale ZERO delta comments in append_range_checks and fill_trace Both methods had inline comments claiming the clock adjustment made the first-row delta "end up being ZERO". The delta is actually 1 (prev_clk is set to first_clk - 1), matching the struct-level doc already corrected in the previous commit. Also fixes the "pervious" typo in fill_trace. * chore: CHANGELOG --------- Co-authored-by: François Garillot <francois@garillot.net>
* sorted_array bounds check * changelog * simplify tests * explicit bounds check * feedback * chore: address comments * chore: addressing comments * chore: align `sorted_array` invariant messages --------- Co-authored-by: krushimir <189111540+krushimir@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is a tracking PR for v0.23.0 release